#include "Frontend.h"


Frontend::Frontend(QString input)
{
    string source=input.toStdString();
    //string line;
    numlinea=0;
    ifstream ingreso(source.c_str());

    map<string,Atributos > TSimbolos;

    QMultiHash <QString,Atributos> hola;


    Atributos temp ;
    temp.ambito=20;

    hola.insert("while",temp);

    Atributos temp2 ;
    temp2.ambito=25;
    hola.insert("while",temp2);


    QMultiHash<QString,Atributos>::iterator i = hola.find("while");
    Atributos w =  i.value();
    //cout<<w.ambito<<" ja!\n";

    QMultiHash<QString,Atributos>::iterator j = hola.find("while");
    while(j != hola.end() && j.key() == "while")
    {
        w =  j.value();
        cout<<w.ambito<<" ja!\n";
        ++j;
    }

     //cin.get();


    //-------------TOKENS ESPECIFICOS- ----------------------//

    TSimbolos["while"].lexema="while";TSimbolos["while"].ambito=0;TSimbolos["while"].tipo="TEsp";
    TSimbolos["for"].lexema="for";TSimbolos["for"].ambito=0;TSimbolos["for"].tipo="TEsp";
    TSimbolos["do"].lexema="do";TSimbolos["do"].ambito=0;TSimbolos["do"].tipo="TEsp";
    TSimbolos["int"].lexema="int";TSimbolos["int"].ambito=0;TSimbolos["int"].tipo="TEsp";
    TSimbolos["double"].lexema="double";TSimbolos["double"].ambito=0;TSimbolos["double"].tipo="TEsp";
    TSimbolos["real"].lexema="real";TSimbolos["real"].ambito=0;TSimbolos["real"].tipo="TEsp";
    TSimbolos["if"].lexema="if";TSimbolos["if"].ambito=0;TSimbolos["if"].tipo="TEsp";
    TSimbolos["else"].lexema="else";TSimbolos["else"].ambito=0;TSimbolos["else"].tipo="TEsp";
    TSimbolos["exit"].lexema="exit";TSimbolos["exit"].ambito=0;TSimbolos["exit"].tipo="TEsp";

    //-------------TOKENS ESPECIFICOS- ----------------------//

    //cout<<"para la clave while su atributo ambito es :"<< TSimbolos["while"].ambito<<endl;
//    TSimbolos["harry"].push_back("yee");
//    TSimbolos["harry"].push_back("ye");
//    TSimbolos["harry"].push_back("yee");
    //for(int i=0;i<TSimbolos["harry"].size();i++)
      //  cout<<"elemento en harry"<<TSimbolos["harry"][i]<<endl;
    //TSimbolos["while"]=123;
    char c;
    string buffer;
    if(ingreso.good())
    {
         //cout<<"too bien :)"<<endl;
        while(!ingreso.eof()){
        c=ingreso.get();
        if(c==' ' || c== '\t' ){  //|| c=='{' || c==',' || c==';' || c=='(' || c==')' || c=='='){
            cout <<endl<<"El buffer es : "<<buffer<<endl;
            buffer.clear();
        }
        //getline(ingreso,line);
        else if(c=='\n'){
              numlinea++;
//            cout <<endl<<"El buffer es : "<<buffer<<endl;
//            buffer.clear();
            }
            else {
               buffer=buffer+c;

            }

        cout<<c;

        }
     ingreso.close();
     cout<<"el numero de lineas es: "<<numlinea;
    }
    else
      cout<<"El sguiente archivo  no pude ser abierto :" << source<<endl;




}
void Frontend::scanner()
{

}
Atributos::~Atributos(){
}
